"""
Registry definitions for learner components in DIL_Frame.

This module defines the registries for various learner components including
learners, training strategies, and other components.
"""

from core.registry import Registry
from learners.interfaces import (
    LearnerInterface,
    MemoryInterface,
    PrototypeInterface,
    ClassifierAlignmentInterface,
    DriftCompensationInterface,
    TrainingInterface,
    EvaluationInterface,
)

# Create registries for learner components
LEARNER_REGISTRY = Registry[LearnerInterface]("learner", LearnerInterface)
TRAINING_STRATEGY_REGISTRY = Registry[TrainingInterface](
    "training_strategy", TrainingInterface
)
DRIFT_COMPENSATION_REGISTRY = Registry[DriftCompensationInterface](
    "drift_compensation", DriftCompensationInterface
)
PROTOTYPE_MANAGER_REGISTRY = Registry[PrototypeInterface](
    "prototype_manager", PrototypeInterface
)
MEMORY_MANAGER_REGISTRY = Registry[MemoryInterface]("memory_manager", MemoryInterface)
CLASSIFIER_ALIGNMENT_REGISTRY = Registry[ClassifierAlignmentInterface](
    "classifier_alignment", ClassifierAlignmentInterface
)
EVALUATION_MANAGER_REGISTRY = Registry[EvaluationInterface](
    "evaluation_manager", EvaluationInterface
)

# Dictionary of all learner registries
STANDARD_REGISTRIES = {
    "learner": LEARNER_REGISTRY,
    "training_strategy": TRAINING_STRATEGY_REGISTRY,
    "drift_compensation": DRIFT_COMPENSATION_REGISTRY,
    "prototype_manager": PROTOTYPE_MANAGER_REGISTRY,
    "memory_manager": MEMORY_MANAGER_REGISTRY,
    "classifier_alignment": CLASSIFIER_ALIGNMENT_REGISTRY,
    "evaluation_manager": EVALUATION_MANAGER_REGISTRY,
}

__all__ = [
    "LEARNER_REGISTRY",
    "TRAINING_STRATEGY_REGISTRY",
    "DRIFT_COMPENSATION_REGISTRY",
    "PROTOTYPE_MANAGER_REGISTRY",
    "MEMORY_MANAGER_REGISTRY",
    "CLASSIFIER_ALIGNMENT_REGISTRY",
    "EVALUATION_MANAGER_REGISTRY",
    "STANDARD_REGISTRIES",
]
